home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / redakcyjne / programy / VideoLAN Client (VLC) 1.0.5 / vlc-1.0.5-win32.exe / lua / playlist / youtube_homepage.lua < prev    next >
Text File  |  2010-01-30  |  2KB  |  54 lines

  1. --[[
  2.   Parse YouTube homepage and browse pages. Next step is to recode firefox
  3.   in VLC ... using Lua of course ;)
  4.  
  5.  $Id$
  6.  
  7.  Copyright ┬⌐ 2007 the VideoLAN team
  8.  
  9.  This program is free software; you can redistribute it and/or modify
  10.  it under the terms of the GNU General Public License as published by
  11.  the Free Software Foundation; either version 2 of the License, or
  12.  (at your option) any later version.
  13.  
  14.  This program is distributed in the hope that it will be useful,
  15.  but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  GNU General Public License for more details.
  18.  
  19.  You should have received a copy of the GNU General Public License
  20.  along with this program; if not, write to the Free Software
  21.  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  22. --]]
  23.  
  24. function probe()
  25.     return vlc.access == "http" and ( string.match( vlc.path, "youtube.com/%?$" ) or string.match( vlc.path, "youtube.com/browse" ) )
  26. end
  27.  
  28. function parse()
  29.     p = {}
  30.     while true
  31.     do
  32.         line = vlc.readline()
  33.         if not line then break end
  34.         for _path, _artist, _name in string.gmatch( line, "href=\"(/watch%?v=[^\"]*)\" onclick=\"_hbLink%('([^']*)','Vid[^\']*'%);\">([^<]*)</a><br/>" )
  35.         do
  36.             path = "http://www.youtube.com" .. _path
  37.             name = vlc.strings.resolve_xml_special_chars( _name )
  38.             artist = _artist
  39.         end
  40.         for _min, _sec in string.gmatch( line, "<span class=\"runtime\">(%d*):(%d*)</span>" )
  41.         do
  42.             duration = 60 * _min + _sec
  43.         end
  44.         if path and name and artist and duration then
  45.             table.insert( p, { path = path; name = name; artist = artist; duration = duration } )
  46.             path = nil
  47.             name = nil
  48.             artist = nil
  49.             duration = nil
  50.         end
  51.     end
  52.     return p
  53. end
  54.